package com.wavehi.service;

import com.wavehi.pojo.User;

import java.util.List;

/**
 * @Author WaveHi
 * @Date 25/9/2021 上午 10:51
 * @Version 1.0
 * @Contact HJBWaveHi@163.com
 * @Description
 */
public interface IUserService {
    /**
     * 添加用户
     * @param user  需要添加的用户
     * @return 返回false表示添加失败
     */
    Boolean add(User user);

    /**
     * 删除用户
     * @param id 用户对应的id
     * @return 返回false表示删除失败或没有该用户
     */
    Boolean deleteUser(Long id);

    /**
     * 更新用户信息
     * @param user 需要更新的信息
     * @return 返回false表示更新失败
     */
    Boolean updateUser(User user);

    /**
     * 判断用户名是否已经存在
     * @param username 用户名
     * @return 返回true表示用户名已存在
     */
    Boolean userExists(String username);

    /**
     * 根据用户名和密码判断用户是否存在
     * @param username 用户名
     * @param password 密码
     * @return 返回false表示用户不存在
     */
    Boolean userExists(String username, String password);

    /**
     * 根据用户id获取用户
     * @param id 用户对应的id
     * @return 返回一个包含指定用户信息的对象
     */
    User getUser(Long id);

    /**
     * 根据用户名获取用户
     * @param username 用户名
     * @return 返回一个包含指定用户信息的对象
     */
    User getUser(String username);

    /**
     * 获取所有用户
     * @return 返回一个包含所有用户的List集合
     */
    List<User> getAllUsers();

    /**
     * 获取指定页和指定数量的数用户
     * @param pageNo 页数
     * @param dataCount 数据量
     * @return 返回一个包含指定数量用户的List集合
     */
    List<User> getPartOfUsers(Integer pageNo, Integer dataCount);

    /**
     * 根据指定筛选条件获取相应的用户信息
     * @param user 封装筛选条件的对象
     * @return 返回一个包含所有指定用户信息的List集合
     */
    List<User> getPartOfUsers(User user);

    /**
     * 获取指定页数和指定数量并经过筛选的用户
     * @param user 封装的筛选条件
     * @param pageNo 指定页
     * @param dataCount 信息条数
     * @return 返回一个包含所有指定用户的List集合
     */
    List<User> getPartOfUsers(User user, Integer pageNo, Integer dataCount);
}
